#pragma once

struct EDITORLOGIC_API SPoint
{
	Real px, py;
};

class EDITORLOGIC_API CBezierCurve
{
public:
	CBezierCurve(void);

	~CBezierCurve(void);

	typedef std::vector<SPoint> PointContainer;
	template class EDITORLOGIC_API std::allocator<SPoint>;
	template class EDITORLOGIC_API std::vector<SPoint>;

	BOOL Draw() const;

	VOID GetSelectedPoint(Real x, Real y, SPoint* ret) const;

	VOID AddPoint(Real x, Real y);

	VOID RemovePoint(Real x, Real y);

	inline BOOL IsValid() const { return m_bValid; }

private:
	PointContainer m_vPointContainer;

	BOOL           m_bValid;
};